<template>
	<div class="wrapper">
				
				<!-- header部分 -->
				<header>
					<p><Back></Back>商家信息</p>
				</header>
				
				<!-- 商家logo部分 -->
				<div class="business-logo">
					<img :src="business.businessImg">
				</div>
				
				<!-- 商家信息部分 -->
				<div class="business-info">
					<h1>{{business.businessName}}</h1>
					<p>&#165;{{business.starPrice}}起送 &#165;{{business.deliveryPrice}}配送</p>
					<p>{{business.businessExplain}}</p>
					
					 <button @click="toggleFavorite" :class="{'is-favorite': isFavorite}">
					    {{ isFavorite ? '已收藏' : '收藏' }}
					  </button>
				</div>
				
				<!-- 食品列表部分 -->
				<ul class="food">
					<li v-for="(item,index) in foodArr" :key="item.foodId">
						<div class="food-left">
							<img :src="item.foodImg">
							<div class="food-left-info">
								<h3>{{item.foodName}}</h3>
								<p>{{item.foodExplain}}</p>
								<p>&#165;{{item.foodPrice}}</p>
							</div>
						</div>
						<div class="food-right">
							<div>
								<i class="fa fa-minus-circle" @click="minus(index)" v-show="item.quantity!=0"></i>
							</div>
							<p><span v-show="item.quantity!=0">{{item.quantity}}</span></p>
							<div>
								<i class="fa fa-plus-circle" @click="add(index)"></i>
							</div>
						</div>
					</li>
				</ul>
				
				<!-- 购物车部分 -->
				<div class="cart" @click="toggleCart">
				  <div class="cart-left">
				    <div class="cart-left-icon" :style="totalQuantity==0?'background-color:#505051;':'background-color:#3190E8;'">
				      <i class="fa fa-shopping-cart"></i>
				      <div class="cart-left-icon-quantity" v-show="totalQuantity!=0">{{totalQuantity}}</div>
				    </div>
				    <div class="cart-left-info">
				      <p>&#165;{{totalPrice}}</p>
				      <p>另需配送费{{business.deliveryPrice}}元</p>
				    </div>
				  </div>
				  <div class="cart-right">
				    <!-- 不够起送费 -->
				    <div class="cart-right-item" v-show="totalSettle<business.starPrice" style="background-color: #535356;cursor: default;">
				      &#165;{{business.starPrice}}起送
				    </div>
				    <!-- 达到起送费 -->
				    <div class="cart-right-item" @click.stop="toOrder" v-show="totalSettle>=business.starPrice">
				      去结算
				    </div>
				  </div>
				</div>
				
				<!-- 购物车展开显示的商品信息部分 -->
				<div class="cart-detail" v-show="isCartOpen">
				  <ul>
				    <li v-for="item in filteredFoodArr" :key="item.foodId">
				      <div class="cart-detail-item">
				        <span>{{ item.foodName }}</span>
				        <span>{{ item.quantity }} x &#165;{{ item.foodPrice }}</span>
				        <span>&#165;{{ item.quantity * item.foodPrice }}</span>
				      </div>
				    </li>
				  </ul>
				</div>
				
			</div>
</template>

<script>
	import Back from '../components/Back.vue';
	export default{
		name:'BusinessInfo',
		data(){
			return {
				businessId: this.$route.query.businessId,
				business:{},
				foodArr:[],
				user:{},
				 isCartOpen: false,
				  isFavorite: false
			}
		},
		created() {
			this.user = this.$getSessionStorage('user');
			
			//根据businessId查询商家信息
			let url = `BusinessController/getBusinessById/${this.businessId}`;
			this.$axios.get(url).then(response=>{
				this.business = response.data.result;
				this.foodArr = this.business.foodList;
				for(let i=0;i<this.foodArr.length;i++){
					this.foodArr[i].quantity=0;
				}
				
				//如果已登录，那么需要去查询购物车中是否已经选购了某个食品
				if(this.user!=null){
					this.listCart();
					this.checkFavorite();
				}
			}).catch(error=>{
				console.error(error);
			});
			
			
			
		},
		components: {
		    
			Back
		},
		methods:{
			 toggleCart() {
			      this.isCartOpen = !this.isCartOpen;  // 切换购物车展开与折叠
			    },
				checkFavorite() {
					let url = `FavoriteController/isFavorite/${this.businessId}/${this.user.userId}`;
				    this.$axios.post(url).then(response => {
				      this.isFavorite = response.data.result === 1;  // Assume API returns 1 for favorite and 0 for not favorite
				    }).catch(error => {
				      console.error(error);
				    });
				  },
				toggleFavorite() {
				    if (this.user == null) {
				      // Redirect to login if user is not logged in
				      this.$router.push({ path: '/login' });
				      return;
				    }
				
				    if (this.isFavorite) {
				      this.removeFavorite();
				    } else {
				      this.addFavorite();
				    }
				  },
				  
				  addFavorite() {
					  let url = `FavoriteController/addFavorite/${this.businessId}/${this.user.userId}`;
				    this.$axios.post(url).then(response => {
				      if (response.data.result === 1) {
				        this.isFavorite = true;
				        alert('收藏成功！');
				      } else {
				        alert('收藏失败！');
				      }
				    }).catch(error => {
				      console.error(error);
				    });
				  },
				  
				  removeFavorite() {
					   let url = `FavoriteController/removeFavorite/${this.businessId}/${this.user.userId}`;
				    this.$axios.post(url).then(response => {
				      if (response.data.result === 1) {
				        this.isFavorite = false;
				        alert('取消收藏成功！');
				      } else {
				        alert('取消收藏失败！');
				      }
				    }).catch(error => {
				      console.error(error);
				    });
				  },
			listCart(){
				let url =`CartController/listCart/${this.user.userId}/${this.businessId}`;
				this.$axios.get(url).then(response=>{
					let cartArr = response.data.result;
					//遍历所有食品列表
					for(let foodItem of this.foodArr){
						foodItem.quantity = 0;
						for(let cartItem of cartArr){
							if(cartItem.foodId==foodItem.foodId){
								foodItem.quantity = cartItem.quantity;
							}
						}
					}
					this.foodArr.sort();
				}).catch(error=>{
					console.error(error);
				});
			},
			add(index){
				//首先做登录验证
				if(this.user==null){
					this.$router.push({path:'/login'});
					return;
				}
				
				if(this.foodArr[index].quantity==0){
					//做insert
					this.savaCart(index);
				}else{
					//做update
					this.updateCart(index,1);
				}
			},
			minus(index){
				//首先做登录验证
				if(this.user==null){
					this.$router.push({path:'/login'});
					return;
				}
				
				if(this.foodArr[index].quantity>1){
					//做update
					this.updateCart(index,-1);
				}else{
					//做delete
					this.removeCart(index);
				}
			},
			savaCart(index){
				let url =`CartController/saveCart/${this.user.userId}/${this.businessId}/${this.foodArr[index].foodId}`;
				this.$axios.post(url).then(response=>{
					if(response.data.result==1){
						//此食品数量要更新为1；
						this.foodArr[index].quantity=1;
						this.foodArr.sort();
					}else{
						alert('向购物车中添加食品失败！');
					}
				}).catch(error=>{
					console.error(error);
				});
			},
			updateCart(index,num){
				let url = `CartController/updateCart/${this.user.userId}/${this.businessId}/${this.foodArr[index].foodId}/${this.foodArr[index].quantity+num}`;
				this.$axios.put(url).then(response=>{
					if(response.data.result==1){
						//此食品数量要更新为1或-1；
						this.foodArr[index].quantity+=num;
						this.foodArr.sort();
					}else{
						alert('向购物车中更新食品失败！');
					}
				}).catch(error=>{
					console.error(error);
				});
			},
			removeCart(index){
				let url = `CartController/removeCart/${this.user.userId}/${this.businessId}/${this.foodArr[index].foodId}`;
				this.$axios.delete(url).then(response=>{
					if(response.data.result==1){
						//此食品数量要更新为0；视图的减号和数量要消失
						this.foodArr[index].quantity=0;
						this.foodArr.sort();
					}else{
						alert('从购物车中删除食品失败！');
					}
				}).catch(error=>{
					console.error(error);
				});
			},
			toOrder(){
				this.$router.push({path:'/orders',query:{businessId:this.business.businessId}});
			}
		},
		computed:{
			//食品总价格
			totalPrice(){
				let total = 0;
				for(let item of this.foodArr){
					total += item.foodPrice*item.quantity;
				}
				return total;
			},
			//食品总数量
			totalQuantity(){
				let quantity = 0;
				for(let item of this.foodArr){
					quantity += item.quantity;
				}
				return quantity;
			},
			//结算总价格
			totalSettle(){
				return this.totalPrice+this.business.deliveryPrice;
			},
			filteredFoodArr() {
			    return this.foodArr.filter(item => item.quantity > 0);
			  }
		}
	}
</script>

<style scoped>
	/****************** 总容器 ******************/
	.wrapper{
		width: 100%;
		height: 100%;
	}
	
	/****************** header部分 ******************/
	.wrapper header{
		width: 100%;
		height: 12vw;
		background-color: #0097FF;
		color: #fff;
		font-size: 4.8vw;
		
		position: fixed;
		left: 0;
		top: 0;
		z-index: 1000;
		
		display: flex;
		justify-content: center;
		align-items: center;
	}
	.wrapper header Back {
		margin-left: 2.5vw;
	}
	
	/****************** 商家logo部分 ******************/
	.wrapper .business-logo{
		width: 100%;
		height: 35vw;
		/*使用上外边距避开header部分*/
		margin-top: 12vw;
		
		display: flex;
		justify-content: center;
		align-items: center;
	}
	.wrapper .business-logo img{
		width: 40vw;
		height: 30vw;
		border-radius: 5px;
	}
	
	/****************** 商家信息部分 ******************/
	.wrapper .business-info{
		width: 100%;
		height: 20vw;
		
		display: flex;
		flex-direction: column;
		justify-content: center;
		align-items: center;
	}
	.wrapper .business-info h1{
		font-size: 5vw;
	}
	.wrapper .business-info p{
		font-size: 3vw;
		color: #666;
		margin-top: 1vw;
	}
	
	/****************** 食品列表部分 ******************/
	.wrapper .food{
		width: 100%;
		/*使用下外边距避开footer部分*/
		
		padding-bottom: 14vw;
	}
	.wrapper .food li{
		width: 100%;
		box-sizing: border-box;
		padding: 2.5vw;
		user-select: none;
		
		display: flex;
		justify-content: space-between;
		align-items: center;
	}
	.wrapper .food li .food-left{
		display: flex;
		align-items: center;
	}
	.wrapper .food li .food-left img{
		width: 20vw;
		height: 20vw;
	}
	.wrapper .food li .food-left .food-left-info{
		margin-left: 3vw;
	}
	.wrapper .food li .food-left .food-left-info h3{
		font-size: 3.8vw;
		color: #555;
	}
	.wrapper .food li .food-left .food-left-info p{
		font-size: 3vw;
		color: #888;
		margin-top: 2vw;
	}
	.wrapper .food li .food-right{
		width: 16vw;
		display: flex;
		justify-content: space-between;
		align-items: center;
	}
	.wrapper .food li .food-right .fa-minus-circle{
		font-size: 5.5vw;
		color: #999;
		cursor: pointer;
	}
	.wrapper .food li .food-right p{
		font-size: 3.6vw;
		color: #333;
	}
	.wrapper .food li .food-right .fa-plus-circle{
		font-size: 5.5vw;
		color: #0097EF;
		cursor: pointer;
	}
	
	/****************** 购物车部分 ******************/
	.wrapper .cart{
		width: 100%;
		height: 14vw;
		
		position: fixed;
		left: 0;
		bottom: 0;
		
		display: flex;
	}
	.wrapper .cart .cart-left{
		flex: 2;
		background-color: #505051;
		display: flex;
	}
	.wrapper .cart .cart-left .cart-left-icon{
		width: 16vw;
		height: 16vw;
		box-sizing: border-box;
		border: solid 1.6vw #444;
		border-radius: 8vw;
		background-color: #3190E8;
		font-size: 7vw;
		color: #fff;
		
		display: flex;
		justify-content: center;
		align-items: center;
		
		margin-top: -4vw;
		margin-left: 3vw;
		
		position: relative;
	}
	.wrapper .cart .cart-left .cart-left-icon-quantity{
		width: 5vw;
		height: 5vw;
		border-radius: 2.5vw;
		background-color: red;
		color: #fff;
		font-size: 3.6vw;
		
		display: flex;
		justify-content: center;
		align-items: center;
		
		position: absolute;
		right: -1.5vw;
		top: -1.5vw;
	}
	.wrapper .cart .cart-left .cart-left-info p:first-child{
		font-size: 4.5vw;
		color: #fff;
		margin-top: 1vw;
	}
	.wrapper .cart .cart-left .cart-left-info p:last-child{
		font-size: 2.8vw;
		color: #AAA;
	}
	
	.wrapper .cart .cart-right{
		flex: 1;
	}
	/*达到起送费时的样式*/
	.wrapper .cart .cart-right .cart-right-item{
		width: 100%;
		height: 100%;
		background-color: #38CA73;
		color: #fff;
		font-size: 4.5vw;
		font-weight: 700;
		user-select: none;
		cursor: pointer;
		
		display: flex;
		justify-content: center;
		align-items: center;
	}
	/****************** 购物车展开部分 ******************/
	.cart-detail {
	  width: 100%;
	  background-color: #f9f9f9;
	  border-top: 1px solid #0097FF;
	  position: fixed;
	  left: 0;
	  bottom: 14vw;  /* 距离购物车模块上方 */
	  height: 40vw; /* 控制高度 */
	  overflow-y: auto; /* 当内容超出时滚动 */
	  box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1);
	}
	
	.cart-detail ul {
	  list-style: none;
	  padding: 0;
	  margin: 0;
	}
	
	.cart-detail-item {
	  display: flex;
	  justify-content: space-between;
	  padding: 2vw 4vw;
	  border-bottom: 1px solid #ddd;
	  font-size: 3.8vw;
	}
	.business-info button {
	  margin-top: 10px;
	  padding: 5px 15px;
	  border: none;
	  border-radius: 5px;
	  cursor: pointer;
	  background-color: #0097FF;
	  color: white;
	}
	
	.business-info button.is-favorite {
	  background-color: #ff5b5b;
	}
	
	
</style>
